1. Technical Field
The invention relates to the field of software tools for use with data processing apparatus. More particularly, the invention relates to the field of software tools for assisting in the production of the code for computer programs.
2. Description of the Prior Art
The writing of computer programs is a skilled, time consuming, and consequently expensive task. The traditional way of writing computer programs was for a person with a complete and detailed knowledge of the programming language, and the computer the program would run on, to manually write the many hundreds or thousands of line of code that were required. As computer programs become larger and ever more complex the difficulty involved in producing the code increases.
A contributory factor towards this increased complexity has been the adoption of more sophisticated user interfaces, e.g. windowing user interfaces. Whilst such user interfaces make it easier for the user to interact with the program, an increased burden must be carried by the program to support this sophistication. Anything that can ease the writing of computer programs is highly advantageous.
Another trend in computing has been the emergence of computing systems in which the programming flow is handled through a message queue rather than by procedural flow. In procedural flow systems the program follows a predefined path through the code, and will be in a defined state at any given point. In the message queue systems user inputs and other events give rise to messages which are queued and then sent on to the appropriate code for handling them. The precise order in which messages are handled is no longer so dominant, and the approach is better suited to multitasking.
There are several known software tools for assisting in the writing of computer code within a message based environment. One such tool is a program called `Easel`. With this tool the programmer is able to define the user interface of the program by simple commands defining the size of a window/dialog box, the inclusion of a menu bar, pull down menus, radio buttons etc. Once the programmer has defined what the user interface should look like, the tool could then generate the code for supporting that user interface.
However, merely easing the production of the user interface code is not the complete solution. The user interface code must be operatively connected to the code that carries out the function requested through the user interface, e.g. once you have defined that the computer program you are developing should have a particular button, you must have a further mechanism for defining what should happen when that button is activated. The way the Easel program addresses this problem is to provide its own unique very high level programming language in which the programmer may define how the user interface is to interact with the rest of the program. Once this high level language definition is written, it is compiled to generate lower level code for the program.
This system suffers from the disadvantages that the programmer is required to learn the new high level language and that it is difficult to integrate and custom produce blocks of code into the program in the high level language.